Python Flask快速使用

发布 : 2017-06-30 分类 : python 浏览 :

一个最小的Flask应用

1
2
3
4
5
6
7
(1).导入了Flask类,这个类的实例将会是我们的WSGI应用程序。
(2).创建一个该类的实例,第一个参数是应用模块或者包的名称
如果你使用单一的模块(如本例),你应该使用 __name__
因为模块的名称将会因其作为单独应用启动还是作为模块导入而有不同( 也即是 '__main__' 或实际的导入名)
(3).使用route()装饰器告诉Flask什么样的URL能触发我们的函数
(4).用run()函数来让应用运行在本地服务器上
其中if __name__ == '__main__': 确保服务器只会在该脚本被Python解释器直接执行的时候才会运行,而不是作为模块导入的时候。

main.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# -*- coding: utf-8 -*-
from flask import Flask

app = Flask(__name__)


@app.route('/hello')
def hello_world():
return 'Hello World!'


if __name__ == '__main__':
# 运行在本地服务器上
# app.run()
# 使你的服务器公开可用
app.run(host='0.0.0.0',port=35016)

Markdown

Markdown

路由

1
直接访问想要的那个页面
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# -*- coding: utf-8 -*-
from flask import Flask

app = Flask(__name__)


@app.route('/Index')
def index():
return 'Index Page'

@app.route('/hello')
def hello_world():
return 'Hello World!'

if __name__ == '__main__':
# 运行在本地服务器上
# app.run()
# 使你的服务器公开可用
app.run(host='0.0.0.0')

在浏览器访问http://115.28.240.96:5000/hello

在浏览器访问http://115.28.240.96:5000/Index

构造URL

1
2
3
4
5
6
7
如果Flask能匹配URL,那么Flask可以生成它们吗?

你可以用url_for()来给指定的函数构造URL

它接受函数名作为第一个参数,也接受对应URL规则的变量部分的命名参数

未知变量部分会添加到URL末尾作为查询参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# -*- coding: utf-8 -*-

from flask import Flask, url_for

app = Flask(__name__)


@app.route('/')
def index():
pass


@app.route('/login')
def login():
return "login"


@app.route('/user/<username>')
def profile(username):
print "username", username
return username


with app.test_request_context():
print url_for('index')
print url_for('login')
print url_for('login', next='/')
print url_for('profile', username='John Doe')

if __name__ == '__main__':
# 运行在本地服务器上
# app.run()
# 使你的服务器公开可用
app.run(host='0.0.0.0')

HTTP方法

1
2
3
HTTP (与 Web 应用会话的协议)有许多不同的访问 URL 方法

默认情况下,路由只回应GET请求,但是通过route()装饰器传递methods参数可以改变这个行为
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# -*- coding: utf-8 -*-

from flask import Flask, request, url_for

app = Flask(__name__)


@app.route('/Index', methods=['GET', 'POST'])
def index():
return 'Index Page'


@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
pass
else:
pass
return "login"


@app.route('/user/<username>', methods=['GET', 'POST'])
def profile(username):
print "username", username
return username


with app.test_request_context():
print url_for('index')
print url_for('login')
print url_for('login', next='/')
print url_for('profile', username='John Doe')

if __name__ == '__main__':
# 运行在本地服务器上
# app.run()
# 使你的服务器公开可用
app.run(host='0.0.0.0')

静态文件

1
2
3
4
5
动态web应用也会需要静态文件,通常是CSS和JavaScript文件

你已经配置好Web服务器来提供静态文件,但是在开发中,Flask也可以做到。

只要在你的包中或是模块的所在目录中创建一个名为static的文件夹,在应用中使用/static即可访问。
1
url_for('static', filename='style.css')

模板渲染

1
2
3
4
5
6
7
Flask配备了Jinja2模板引擎。

可以使用render_template()方法来渲染模板

你需要做的一切就是将模板名和你想作为关键字的参数传入模板的变量

Flask 会在 templates 文件夹里寻找模板

模板实例

1
2
3
4
5
6
7
<!doctype html>
<title>Hello from Flask</title>
{% if name %}
<h1>Hello {{ name }}!</h1>
{% else %}
<h1>Hello World!</h1>
{% endif %}
1
2
3
@app.route('/hello/<name>')
def hello(name=None):
return render_template('componentloginpage.html',name=name)

重定向

1
2
3
4
5
from flask import abort, redirect, url_for

@app.route('/')
def index():
return redirect(url_for('login'))

错误

1
放弃请求并返回错误代码,用abort()函数
1
2
3
@app.route('/login')
def login():
abort(401)
本文作者 : Matrix
原文链接 : https://matrixsparse.github.io/2017/06/30/Python Flask快速使用/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

知识 & 情怀 | 二者兼得

微信扫一扫, 向我投食

微信扫一扫, 向我投食

支付宝扫一扫, 向我投食

支付宝扫一扫, 向我投食

留下足迹